<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de consultation
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 2 || $GLOBALS['USER']['admin'])){
	
?>
<?php
//------------------------------------------------------------ Définition des variables d'affichage

	// variable indiquant la page sélectionnée
	if(isset($_GET['l']) && numericInt($_GET['l'])){ 
		$page = $_GET['l'];
	}else{
		$page = 1;
	}
		
	// variable indiquant l'ordre selon lequel on tri la liste
	if(isset($_GET['o'])){
		switch($_GET['o']){
		case 0: $ordre = 0; $ordreBDD = "ASC"; break;
		case 1: $ordre = 1; $ordreBDD = "DESC"; break;
		default: $ordre = 0; $ordreBDD = "ASC"; break;
		}
	}else{
		$ordre = 0;
		$ordreBDD = "ASC";
	}
	
	// variable indiquant la colonne selon laquelle on tri la liste
	if(isset($_GET['t'])){
		switch($_GET['t']){
		case 1: $tri = 1; $triBDD = "reference ".$ordreBDD; break;
		case 2: $tri = 2; $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD; break;
		default: $tri = 2; $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD; break;
		}
	}else{
		$tri = 2;
		$triBDD = $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD;
	}
	
	// Traitement des options
	$optionsSet = false;
	$optionsURL = "";
	
	if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])){
		$optionsURL .= "&amp;opt_seulDispo=1";
		$optionsSet = true;
	}
	if(isset($_POST['opt_seulNonVide']) || isset($_GET['opt_seulNonVide'])){
		$optionsURL .= "&amp;opt_seulNonVide=1";
		$optionsSet = true;
	}

	
?>
<?php
//------------------------------------------------------------ Récupération de la liste des semis

	// On compte le nombre total de semis enregistrés
	$nb_total_semis = 0;
	
	$query_compte_semis = "SELECT COUNT(*) ";
	$query_compte_semis .= "FROM semis se ";
	$query_compte_semis .= "INNER JOIN entree en ON en.SEM_CODESEMIS = se.CODESEMIS ";
	$query_compte_semis .= "LEFT JOIN sortie so ON so.CODESEMIS = se.CODESEMIS ";
	$query_compte_semis .= "LEFT JOIN entree tou ON tou.CODESEMIS = se.CODESEMIS ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulNonVide']) || isset($_GET['opt_seulNonVide'])){
			$query_compte_semis .= "WHERE (se.QUANTITEGRAINESSEMIS > 0 OR se.QUANTITEGRAINESSEMIS IS NULL) ";
		}
	}
	$query_compte_semis .= "GROUP BY se.CODESEMIS ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])){
			$query_compte_semis .= "HAVING COUNT(DISTINCT en.CODEENTREE) > COUNT(DISTINCT so.CODESORTIE) ";
		}
	}
	
	$result_compte_semis = mysql_query($query_compte_semis, $connexion) or logError("COMPTE SEMIS-".$query_compte_semis."-".mysql_error());
	
	$tab_compte_semis = mysql_fetch_row($result_compte_semis);
	
	$nb_total_semis = $tab_compte_semis[0];
	
	mysql_free_result($result_compte_semis);
	
	// récupération des informations des semis
	$query_recuperation_liste_semis = "SELECT se.QUANTITEGRAINESSEMIS AS quantite, se.CODESEMIS AS id, se.REFERENCESEMIS AS reference, f.NOMFAMILLE AS famille, g.NOMGENRE AS genre, e.NOMESPECE AS espece, v.NOMVARIETE AS variete, nbe.nbEntrees, nbs.nbSorties, en.CODEPRETENTRANT AS pretEntrant, so.CODEPRETSORTANT AS pretSortant, so.CODESEMIS AS semis_sortant ";
	$query_recuperation_liste_semis .= "FROM semis se ";
	$query_recuperation_liste_semis .= "INNER JOIN (SELECT SEM_CODESEMIS AS idSemisEntree, COUNT(*) AS nbEntrees FROM entree WHERE SEM_CODESEMIS IS NOT NULL GROUP BY SEM_CODESEMIS) nbe ON nbe.idSemisEntree = se.CODESEMIS ";
	$query_recuperation_liste_semis .= "LEFT JOIN (SELECT CODESEMIS AS idSemisSortie, COUNT(*) AS nbSorties FROM sortie WHERE CODESEMIS IS NOT NULL GROUP BY CODESEMIS) nbs ON nbs.idSemisSortie = se.CODESEMIS ";
	$query_recuperation_liste_semis .= "INNER JOIN entree en ON en.SEM_CODESEMIS = se.CODESEMIS AND en.DATEENTREE = (SELECT MIN(DATEENTREE) FROM entree WHERE SEM_CODESEMIS = se.CODESEMIS) ";
	$query_recuperation_liste_semis .= "LEFT JOIN sortie so ON so.CODESEMIS = se.CODESEMIS AND so.DATESORTIE = (SELECT MAX(DATESORTIE) FROM sortie WHERE CODESEMIS = se.CODESEMIS) ";
	$query_recuperation_liste_semis .= "INNER JOIN taxon t ON t.CODETAXON = se.CODETAXON ";
	$query_recuperation_liste_semis .= "LEFT JOIN est_de_famille l1 INNER JOIN famille f ON f.CODEFAMILLE = l1.CODEFAMILLE ON l1.CODETAXON = t.CODETAXON AND l1.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_semis .= "LEFT JOIN appartient_a_genre l2 INNER JOIN genre g ON g.CODEGENRE = l2.CODEGENRE ON l2.CODETAXON = t.CODETAXON AND l2.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_semis .= "LEFT JOIN est_de_espece l3 INNER JOIN espece e ON e.CODEESPECE = l3.CODEESPECE ON l3.CODETAXON = t.CODETAXON AND l3.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_semis .= "LEFT JOIN a_comme_variete l4 INNER JOIN variete v ON v.CODEVARIETE = l4.CODEVARIETE ON l4.CODETAXON = t.CODETAXON AND l4.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_semis .= "WHERE 1 ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])){
			$query_recuperation_liste_semis .= "AND (nbEntrees > nbSorties OR nbSorties IS NULL) ";
		}
		if(isset($_POST['opt_seulNonVide']) || isset($_GET['opt_seulNonVide'])){
			$query_recuperation_liste_semis .= "AND (se.QUANTITEGRAINESSEMIS > 0 OR se.QUANTITEGRAINESSEMIS IS NULL) ";
		}
	}
	$query_recuperation_liste_semis .= "ORDER BY ".$triBDD." ";
	$query_recuperation_liste_semis .= "LIMIT ".(($page-1)*$GLOBALS['CONFIG']['nbParPage']).", ".($GLOBALS['CONFIG']['nbParPage'])." ";
	
	$result_recuperation_liste_semis = mysql_query($query_recuperation_liste_semis, $connexion) or logError("RECUPERATION LISTE SEMIS-".$query_recuperation_liste_semis."-".mysql_error());
	
	$lst_semis = array(); // on créé un tableau qui contient la liste des semis ainsi que les informations de chacun
	$nb_semis = 0;
	while($tab_recuperation_liste_semis = mysql_fetch_assoc($result_recuperation_liste_semis)){
	
		$lst_semis[$nb_semis] = $tab_recuperation_liste_semis;
		$nb_semis++;
		
	}

	mysql_free_result($result_recuperation_liste_semis);

?>
<a name="liste"></a>
<h2>Liste des semis</h2>

<?php 

   $tabth = array ('N°Entrée','Taxon','Statut');
   $extraIcon =''; 
   
   for($i=0;$i<$nb_semis;$i++){
      
		$vide = false;
      
      
        if($lst_semis[$i]['nbEntrees'] > $lst_semis[$i]['nbSorties']){
			if(!is_null($lst_semis[$i]['quantite'])){
				if($lst_semis[$i]['quantite'] > 0){
					$statut = "<span style=\"font-weight: bold; color: #00AA00;\">disponible</span>";
			}else{
					$statut = "<span style=\"font-weight: bold; color: #FF0000;\">vide</span>";
					$vide = true;
				}
			}else{
				$statut = "<span style=\"font-weight: bold; color: #00AA00;\">disponible</span>";
			}
		}else{
			if(!is_null($lst_semis[$i]['semis_sortant'])){
				if(!is_null($lst_semis[$i]['pretSortant'])){
					$statut = "<span style=\"font-weight: bold; color: #00AAFF;\">prêté</span>";
				} else {
					$statut = "<span style=\"font-weight: bold; color: #FF0000;\">sorti</span>";
				}
			}else{
				$statut = "<span style=\"font-weight: bold; color: #FF0000;\">archivé</span>";
			}
		}
      
      if(is_null($lst_semis[$i]['pretEntrant'])){
			if(is_null($lst_semis[$i]['nbSorties']) || $lst_semis[$i]['nbEntrees'] > $lst_semis[$i]['nbSorties']){
				if($GLOBALS['USER']['level'] >= 3 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
					if(!$vide){
						$extraIcon[$i] = " - <a href=\"index.php?p=gestion/semis_transplante&amp;id=".$lst_semis[$i]['id']."\"><img src=\"images/transplanter.gif\" title=\"Indiquer la transplantation en touffe\" alt=\"Transplanter\" /></a>";
						if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
							$extraIcon[$i] .= " - <a href=\"index.php?p=gestion/sortie_ajoute&amp;semi=".$lst_semis[$i]['id']."&amp;oglt1=2\"><img src=\"images/sortie.png\" title=\"Indiquer la sortie du semis\" alt=\"Sortir\" /></a>";					
						}
					}
				}
			}else{
				if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
					$extraIcon[$i] = " - <a href=\"index.php?p=gestion/semis_annule&amp;id=".$lst_semis[$i]['id']."\"><img src=\"images/annuler.png\" title=\"Annuler la sortie du semis\" alt=\"Annuler sortie\" /></a>";
				}
			}
		}
      
   
      $tab_result[$i] = array (  htmlentities($lst_semis[$i]['id'], ENT_NOQUOTES, "UTF-8"),
                                 htmlentities($lst_semis[$i]['reference'], ENT_NOQUOTES, "UTF-8"),
                                 "(".htmlentities(capitalise($lst_semis[$i]['famille']), ENT_NOQUOTES, "UTF-8").") <b>".htmlentities(capitalise($lst_semis[$i]['genre']), ENT_NOQUOTES, "UTF-8")." ".htmlentities(capitalise($lst_semis[$i]['espece']), ENT_NOQUOTES, "UTF-8")."</b> <i>".htmlentities(capitalise($lst_semis[$i]['variete']), ENT_NOQUOTES, "UTF-8")."</i>",
                                 $statut );
   
   }

   
   displayListe("semis",750,$nb_total_semis,$optionsURL,'',1,$extraIcon);



?>

<div class="options" style="margin-left: auto; margin-right: auto; width: 750px">
	<span id="indOF_options"><?php if($optionsSet) echo "▼"; else echo "►"; ?></span> <a href="#liste" onclick="ouvrirFermerTXT('lst_options', 1, 'indOF_options', '▼', '►'); return false;">Options</a>
	<div id="lst_options" style="display: <?php if($optionsSet) echo "block"; else echo "none"; ?>;">
		<form id="frm_options" method="post" action="index.php?p=gestion/semis_gere&amp;l=<?php echo $page; ?>&amp;t=<?php echo $tri; ?>&amp;o=<?php echo $ordre; ?>#liste">
			<input type="checkbox" name="opt_seulDispo" onchange="document.getElementById('frm_options').submit();" <?php if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])) echo "checked=\"checked\""; ?> /> <label>Seulement les semis au jardin</label><br />
			<input type="checkbox" name="opt_seulNonVide" onchange="document.getElementById('frm_options').submit();" <?php if(isset($_POST['opt_seulNonVide']) || isset($_GET['opt_seulNonVide'])) echo "checked=\"checked\""; ?> /> <label>Seulement les semis contenant encore des graines</label>
		</form>
	</div>
</div>
<br />
<div class="information">
	<div class="titre">Définition</div>
	<h4>Semis :</h4>
	<p>Un semis est une plantation de graines d'un seul type, destinée à devenir une touffe.</p>
</div>
<div class="information">
	<div class="titre">Information</div>
	<h4>Actions bloquées :</h4>
	<p>Vous ne pouvez pas transplanter ou faire sortir des semis qui sont prêtés par une structure. Utilisez la page <a href="index.php?p=gestion/pretentrant_gere">Gerer prêts</a> pour indiquer le retour du semis à la structure d'origine.</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

	}else{
	
		if(isset($_SESSION)){
			include("pages/401.htm");
		}
	
	}

?>